home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / lsdmonty.lha / mp.s < prev   
Encoding:
Text File  |  1988-02-17  |  13.0 KB  |  794 lines

  1.      Section Copperlist,code_C
  2.  
  3.     opt    c-
  4.  
  5. bplen    equ    (40*256)
  6.  
  7.     move.l  4.w,a6
  8.     ;jsr     -$84(a6)    ; disallow
  9.     lea    glib,a1
  10.     moveq    #0,d0
  11.     move.l    4.w,a6
  12.     jsr    -$228(a6)
  13.     tst    d0
  14.     beq    error
  15.     move.l    D0,graphics    ; store address of graphics lib
  16.     
  17.     move.l    #Screen,d0    ; store address of bitplane0
  18.     move.w    d0,bitplane0_lo    ; into the copper list
  19.     swap    d0
  20.     move.w    d0,bitplane0_hi
  21.     swap    d0
  22.     add.l    #bplen,d0
  23.     
  24.     move.w    d0,bitplane1_lo
  25.     swap    d0
  26.     move.w    d0,bitplane1_hi
  27.     swap    d0
  28.     add.l    #bplen,d0
  29.  
  30.     move.w    d0,bitplane2_lo
  31.     swap    d0
  32.     move.w    d0,bitplane2_hi
  33.     swap    d0
  34.     add.l    #bplen,d0
  35.  
  36.     move.w    d0,bitplane3_lo
  37.     swap    d0
  38.     move.w    d0,bitplane3_hi
  39.         
  40.     move.l    graphics,a6
  41.     add.l    #$32,a6
  42.     move.w    #$80,$dff096        ; dma control write
  43.     move.l    (a6),old_copper        ; store the address of the
  44.     move.l    #my_copper,(a6)        ; old copperlist
  45.     move.w    #$8080,$dff096        ; dma control write
  46.     move.w    #$8010,$dff09a        ; interupt enable bits
  47.     move.l    $6c.w,old_interupt    ; store old level 3 int
  48.     move.l    #new_interupt,$6c.w    ; store my routine
  49.                     ; into level 3 int
  50.  
  51.     bchg    #1,$bfe001        ; turn led off
  52.     jsr    mt_init
  53.  
  54. mouse:    btst    #6,$bfe001
  55.     bne.s    mouse            ; wait for lmb
  56.  
  57.     jsr    mt_end
  58.     bchg    #1,$bfe001
  59.     
  60.     move.l    old_interupt,$6c.w    ; resore old level 3 int
  61.     move.l    #$10,$dff09a         ; Disable Level 3 Interupt
  62.     move.l    graphics,a6
  63.     add.l    #$32,a6
  64.     move.w    #$0080,$dff096
  65.     move.l    old_copper,(a6)        ; restore old copper list
  66.     move.w    #$8080,$dff096
  67.     move.l    graphics,a1
  68.     move.l    4.w,a6
  69.     jsr    -$19e(a6)
  70.     move.l    4.w,a6
  71.     jsr    -138(a6)
  72. Error:    moveq    #0,d0            ; fin
  73.     rts
  74.  
  75. new_interupt:
  76.     movem.l    d0-d7/a0-a6,-(sp)    ; my scroll text
  77.  
  78. wait_irq:
  79.     and.w    #$10,$dff01e
  80.     beq     no_music
  81.     move.w    #$10,$dff09c
  82.  
  83.     jsr    scroll_text
  84.  
  85.     jsr    mt_music
  86.  
  87. no_music:
  88.     movem.l    (sp)+,d0-d7/a0-a6    
  89.     dc.w    $4ef9            ; jmp
  90. old_interupt:    dc.l    0        ; the old int lev 3
  91.  
  92.  
  93. mt_init:lea    mt_data,a0
  94.     add.l    #$03b8,a0
  95.     moveq    #$7f,d0
  96.     moveq    #0,d1
  97. mt_init1:
  98.     move.l    d1,d2
  99.     subq.w    #1,d0
  100. mt_init2:
  101.     move.b    (a0)+,d1
  102.     cmp.b    d2,d1
  103.     bgt.s    mt_init1
  104.     dbf    d0,mt_init2
  105.     addq.b    #1,d2
  106.  
  107. mt_init3:
  108.     lea    mt_data,a0
  109.     lea    mt_sample1(pc),a1
  110.     asl.l    #8,d2
  111.     asl.l    #2,d2
  112.     add.l    #$438,d2
  113.     add.l    a0,d2
  114.     moveq    #$1e,d0
  115. mt_init4:
  116.     move.l    d2,(a1)+
  117.     moveq    #0,d1
  118.     move.w    42(a0),d1
  119.     asl.l    #1,d1
  120.     add.l    d1,d2
  121.     add.l    #$1e,a0
  122.     dbf    d0,mt_init4
  123.  
  124.     lea    mt_sample1(PC),a0
  125.     moveq    #0,d0
  126. mt_clear:
  127.     move.l    (a0,d0.w),a1
  128.     clr.l    (a1)
  129.     addq.w    #4,d0
  130.     cmp.w    #$7c,d0
  131.     bne.s    mt_clear
  132.  
  133.     clr.w    $dff0a8
  134.     clr.w    $dff0b8
  135.     clr.w    $dff0c8
  136.     clr.w    $dff0d8
  137.     clr.l    mt_partnrplay
  138.     clr.l    mt_partnote
  139.     clr.l    mt_partpoint
  140.  
  141.     move.b    mt_data+$3b6,mt_maxpart+1
  142.     rts
  143.  
  144. mt_end:    clr.w    $dff0a8
  145.     clr.w    $dff0b8
  146.     clr.w    $dff0c8
  147.     clr.w    $dff0d8
  148.     move.w    #$f,$dff096
  149.     rts
  150.  
  151. mt_music:
  152.     addq.w    #1,mt_counter
  153. mt_cool:cmp.w    #6,mt_counter
  154.     bne.s    mt_notsix
  155.     clr.w    mt_counter
  156.     bra    mt_rout2
  157.  
  158. mt_notsix:
  159.     lea    mt_aud1temp(PC),a6
  160.     tst.b    3(a6)
  161.     beq.s    mt_arp1
  162.     lea    $dff0a0,a5        
  163.     bsr.s    mt_arprout
  164. mt_arp1:lea    mt_aud2temp(PC),a6
  165.     tst.b    3(a6)
  166.     beq.s    mt_arp2
  167.     lea    $dff0b0,a5
  168.     bsr.s    mt_arprout
  169. mt_arp2:lea    mt_aud3temp(PC),a6
  170.     tst.b    3(a6)
  171.     beq.s    mt_arp3
  172.     lea    $dff0c0,a5
  173.     bsr.s    mt_arprout
  174. mt_arp3:lea    mt_aud4temp(PC),a6
  175.     tst.b    3(a6)
  176.     beq.s    mt_arp4
  177.     lea    $dff0d0,a5
  178.     bra.s    mt_arprout
  179. mt_arp4:rts
  180.  
  181. mt_arprout:
  182.     move.b    2(a6),d0
  183.     and.b    #$0f,d0
  184.     tst.b    d0
  185.     beq    mt_arpegrt
  186.     cmp.b    #$01,d0
  187.     beq.s    mt_portup
  188.     cmp.b    #$02,d0
  189.     beq.s    mt_portdwn
  190.     cmp.b    #$0a,d0
  191.     beq.s    mt_volslide
  192.     rts
  193.  
  194. mt_portup:
  195.     moveq    #0,d0
  196.     move.b    3(a6),d0
  197.     sub.w    d0,22(a6)
  198.     cmp.w    #$71,22(a6)
  199.     bpl.s    mt_ok1
  200.     move.w    #$71,22(a6)
  201. mt_ok1:    move.w    22(a6),6(a5)
  202.     rts
  203.  
  204. mt_portdwn:
  205.     moveq    #0,d0
  206.     move.b    3(a6),d0
  207.     add.w    d0,22(a6)
  208.     cmp.w    #$538,22(a6)
  209.     bmi.s    mt_ok2
  210.     move.w    #$538,22(a6)
  211. mt_ok2:    move.w    22(a6),6(a5)
  212.     rts
  213.  
  214. mt_volslide:
  215.     moveq    #0,d0
  216.     move.b    3(a6),d0
  217.     lsr.b    #4,d0
  218.     tst.b    d0
  219.     beq.s    mt_voldwn
  220.     add.w    d0,18(a6)
  221.     cmp.w    #64,18(a6)
  222.     bmi.s    mt_ok3
  223.     move.w    #64,18(a6)
  224. mt_ok3:    move.w    18(a6),8(a5)
  225.     rts
  226. mt_voldwn:
  227.     moveq    #0,d0
  228.     move.b    3(a6),d0
  229.     and.b    #$0f,d0
  230.     sub.w    d0,18(a6)
  231.     bpl.s    mt_ok4
  232.     clr.w    18(a6)
  233. mt_ok4:    move.w    18(a6),8(a5)
  234.     rts
  235.  
  236. mt_arpegrt:
  237.     move.w    mt_counter(PC),d0
  238.     cmp.w    #1,d0
  239.     beq.s    mt_loop2
  240.     cmp.w    #2,d0
  241.     beq.s    mt_loop3
  242.     cmp.w    #3,d0
  243.     beq.s    mt_loop4
  244.     cmp.w    #4,d0
  245.     beq.s    mt_loop2
  246.     cmp.w    #5,d0
  247.     beq.s    mt_loop3
  248.     rts
  249.  
  250. mt_loop2:
  251.     moveq    #0,d0
  252.     move.b    3(a6),d0
  253.     lsr.b    #4,d0
  254.     bra.s    mt_cont
  255. mt_loop3:
  256.     moveq    #$00,d0
  257.     move.b    3(a6),d0
  258.     and.b    #$0f,d0
  259.     bra.s    mt_cont
  260. mt_loop4:
  261.     move.w    16(a6),d2
  262.     bra.s    mt_endpart
  263. mt_cont:
  264.     add.w    d0,d0
  265.     moveq    #0,d1
  266.     move.w    16(a6),d1
  267.     and.w    #$fff,d1
  268.     lea    mt_arpeggio(PC),a0
  269. mt_loop5:
  270.     move.w    (a0,d0),d2
  271.     cmp.w    (a0),d1
  272.     beq.s    mt_endpart
  273.     addq.l    #2,a0
  274.     bra.s    mt_loop5
  275. mt_endpart:
  276.     move.w    d2,6(a5)
  277.     rts
  278.  
  279. mt_rout2:
  280.     lea    mt_data,a0
  281.     move.l    a0,a3
  282.     add.l    #$0c,a3
  283.     move.l    a0,a2
  284.     add.l    #$3b8,a2
  285.     add.l    #$43c,a0
  286.     move.l    mt_partnrplay(PC),d0
  287.     moveq    #0,d1
  288.     move.b    (a2,d0),d1
  289.     asl.l    #8,d1
  290.     asl.l    #2,d1
  291.     add.l    mt_partnote(PC),d1
  292.     move.l    d1,mt_partpoint
  293.     clr.w    mt_dmacon
  294.  
  295.     lea    $dff0a0,a5
  296.     lea    mt_aud1temp(PC),a6
  297.     bsr    mt_playit
  298.     lea    $dff0b0,a5
  299.     lea    mt_aud2temp(PC),a6
  300.     bsr    mt_playit
  301.     lea    $dff0c0,a5
  302.     lea    mt_aud3temp(PC),a6
  303.     bsr    mt_playit
  304.     lea    $dff0d0,a5
  305.     lea    mt_aud4temp(PC),a6
  306.     bsr    mt_playit
  307.     move.w    #$01f4,d0
  308. mt_rls:    dbf    d0,mt_rls
  309.  
  310.     move.w    #$8000,d0
  311.     or.w    mt_dmacon,d0
  312.     move.w    d0,$dff096
  313.  
  314.     lea    mt_aud4temp(PC),a6
  315.     cmp.w    #1,14(a6)
  316.     bne.s    mt_voice3
  317.     move.l    10(a6),$dff0d0
  318.     move.w    #1,$dff0d4
  319. mt_voice3:
  320.     lea    mt_aud3temp(PC),a6
  321.     cmp.w    #1,14(a6)
  322.     bne.s    mt_voice2
  323.     move.l    10(a6),$dff0c0
  324.     move.w    #1,$dff0c4
  325. mt_voice2:
  326.     lea    mt_aud2temp(PC),a6
  327.     cmp.w    #1,14(a6)
  328.     bne.s    mt_voice1
  329.     move.l    10(a6),$dff0b0
  330.     move.w    #1,$dff0b4
  331. mt_voice1:
  332.     lea    mt_aud1temp(PC),a6
  333.     cmp.w    #1,14(a6)
  334.     bne.s    mt_voice0
  335.     move.l    10(a6),$dff0a0
  336.     move.w    #1,$dff0a4
  337. mt_voice0:
  338.     move.l    mt_partnote(PC),d0
  339.     add.l    #$10,d0
  340.     move.l    d0,mt_partnote
  341.     cmp.l    #$400,d0
  342.     bne.s    mt_stop
  343. mt_higher:
  344.     clr.l    mt_partnote
  345.     addq.l    #1,mt_partnrplay
  346.     moveq    #0,d0
  347.     move.w    mt_maxpart(PC),d0
  348.     move.l    mt_partnrplay(PC),d1
  349.     cmp.l    d0,d1
  350.     bne.s    mt_stop
  351.     clr.l    mt_partnrplay
  352. mt_stop:tst.w    mt_status
  353.     beq.s    mt_stop2
  354.     clr.w    mt_status
  355.     bra.s    mt_higher
  356. mt_stop2:
  357.     rts
  358.  
  359. mt_playit:
  360.     move.l    (a0,d1.l),(a6)
  361.     addq.l    #4,d1
  362.     moveq    #0,d2
  363.     move.b    2(a6),d2
  364.     and.b    #$f0,d2
  365.     lsr.b    #4,d2
  366.  
  367.     move.b    (a6),d0
  368.     and.b    #$f0,d0
  369.     or.b    d0,d2
  370.     tst.b    d2
  371.     beq.s    mt_nosamplechange
  372.  
  373.     moveq    #0,d3
  374.     lea    mt_samples(PC),a1
  375.     move.l    d2,d4
  376.     asl.l    #2,d2
  377.     mulu    #$1e,d4
  378.     move.l    (a1,d2),4(a6)
  379.     move.w    (a3,d4.l),8(a6)
  380.     move.w    2(a3,d4.l),18(a6)
  381.     move.w    4(a3,d4.l),d3
  382.     tst.w    d3
  383.     beq.s    mt_displace
  384.     move.l    4(a6),d2
  385.     add.l    d3,d2
  386.     move.l    d2,4(a6)
  387.     move.l    d2,10(a6)
  388.     move.w    6(a3,d4.l),8(a6)
  389.     move.w    6(a3,d4.l),14(a6)
  390.     move.w    18(a6),8(a5)
  391.     bra.s    mt_nosamplechange
  392.  
  393. mt_displace:
  394.     move.l    4(a6),d2
  395.     add.l    d3,d2
  396.     move.l    d2,10(a6)
  397.     move.w    6(a3,d4.l),14(a6)
  398.     move.w    18(a6),8(a5)
  399. mt_nosamplechange:
  400.     move.w    (a6),d0
  401.     and.w    #$fff,d0
  402.     tst.w    d0
  403.     beq.s    mt_retrout
  404.     move.w    (a6),16(a6)
  405.     move.w    20(a6),$dff096
  406.     move.l    4(a6),(a5)
  407.     move.w    8(a6),4(a5)
  408.     move.w    (a6),d0
  409.     and.w    #$fff,d0
  410.     move.w    d0,6(a5)
  411.     move.w    20(a6),d0
  412.     or.w    d0,mt_dmacon
  413.  
  414. mt_retrout:
  415.     tst.w    (a6)
  416.     beq.s    mt_nonewper
  417.     move.w    (a6),22(a6)
  418.  
  419. mt_nonewper:
  420.     move.b    2(a6),d0
  421.     and.b    #$0f,d0
  422.     cmp.b    #$0b,d0
  423.     beq.s    mt_posjmp
  424.     cmp.b    #$0c,d0
  425.     beq.s    mt_setvol
  426.     cmp.b    #$0d,d0
  427.     beq.s    mt_break
  428.     cmp.b    #$0e,d0
  429.     beq.s    mt_setfil
  430.     cmp.b    #$0f,d0
  431.     beq.s    mt_setspeed
  432.     rts
  433.  
  434. mt_posjmp:
  435.     not.w    mt_status
  436.     moveq    #0,d0
  437.     move.b    3(a6),d0
  438.     subq.b    #1,d0
  439.     move.l    d0,mt_partnrplay
  440.     rts
  441.  
  442. mt_setvol:
  443.     move.b    3(a6),8(a5)
  444.     rts
  445.  
  446. mt_break:
  447.     not.w    mt_status
  448.     rts
  449.  
  450. mt_setfil:
  451.     moveq    #0,d0
  452.     move.b    3(a6),d0
  453.     and.b    #1,d0
  454.     rol.b    #1,d0
  455.     and.b    #$fd,$bfe001
  456.     or.b    d0,$bfe001
  457.     rts
  458.  
  459. mt_setspeed:
  460.     move.b    3(a6),d0
  461.     and.b    #$0f,d0
  462.     beq.s    mt_back
  463.     clr.w    mt_counter
  464.     move.b    d0,mt_cool+3
  465. mt_back:rts
  466.  
  467. mt_aud1temp:
  468.     Dcb.w    10,0
  469.     dc.w    1
  470.     Dcb.w    2,0
  471. mt_aud2temp:
  472.     Dcb.w    10,0
  473.     dc.w    2
  474.     Dcb.w    2,0
  475. mt_aud3temp:
  476.     Dcb.w    10,0
  477.     dc.w    4
  478.     Dcb.w    2,0
  479. mt_aud4temp:
  480.     Dcb.w    10,0
  481.     dc.w    8
  482.     Dcb.w    2,0
  483.  
  484. mt_partnote:    dc.l    0
  485. mt_partnrplay:    dc.l    0
  486. mt_counter:    dc.w    0
  487. mt_partpoint:    dc.l    0
  488. mt_samples:    dc.l    0
  489. mt_sample1:    Dcb.l    31,0
  490. mt_maxpart:    dc.w    0
  491. mt_dmacon:    dc.w    0
  492. mt_status:    dc.w    0
  493.  
  494. mt_arpeggio:
  495.     dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
  496.     dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
  497.     dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
  498.     dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
  499.     dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
  500.  
  501.                 ;of the module
  502.  
  503.  
  504. all_blit:
  505.  
  506.     move.l    a0,$dff054            ; dest mem d
  507.     Move.l    a1,$dff050            ; source mem a
  508.     move.w    #0,$dff064            ; source a modulo 
  509.     Move.w    #$ffff,$dff044            ; blit 1st word mask source a
  510.     Move.w    #$ffff,$dff046            ; blit 1st word mask source a
  511.     move.w    #%1001*256+$f0,$dff040        ; blit cont reg 0
  512.     move.w    #0,$dff042            ; blit cont reg 1
  513.     Move.w    a3,$dff066            ; modulo for dest
  514.     Move.w    a2,$dff058            ; blit height,width
  515.     jsr    doblit
  516.     rts
  517.  
  518.  
  519. doblit:
  520. wait_blit:
  521.      Btst.b    #6,$dff002        ; wait for the blit
  522.     Bne.s    wait_blit        ; to finish
  523.     
  524.     rts
  525.  
  526. offset        equ    68
  527. down        equ    200*40+(11*46)+(2*48)
  528. scroll_text:
  529.     
  530.     move.l    scroff,d0
  531.     sub.l    #2,d0
  532.     move.l    d0,scroff
  533.  
  534.     move.l    scroff,d0
  535.     and.l    #15,d0
  536.     move.l    d0,d1
  537.     mulu    #16,d0
  538.     add.l    d1,d0
  539.     move.w    d0,scroller
  540.     
  541.     move.l    scroff,d0
  542.     cmp.l    #15,d0
  543.     beq    finished2
  544.     cmp.l    #0,d0
  545.     bge    finished
  546.     
  547.     jsr    finished2
  548.  
  549.     clr.l    d0
  550.     move.l    textptr,a0
  551.     move.b    (a0)+,d0
  552.     cmp.b    #0,d0
  553.     beq.s    text_end
  554.     
  555.     cmp.b    #32,d0
  556.     blt.s    ctrl_bad
  557.  
  558.     bra.s    scroll_ok
  559.  
  560. text_end:
  561.     lea    text,a0
  562.     move.l    a0,textptr    
  563.     move.b    #32,d0
  564.     
  565.     bra.s    scroll_ok
  566.     
  567. ctrl_bad:
  568.  
  569.     rts    
  570.     
  571. scroll_ok:
  572.     move.l    #31,scroff
  573.  
  574.     cmp.b #"I",d0
  575.     beq.s    small
  576.  
  577.     cmp.b #":",d0
  578.     beq.s    small
  579.  
  580.     cmp.b #".",d0
  581.     beq.s    small
  582.  
  583.     cmp.b #",",d0
  584.     beq.s    small
  585.  
  586.     cmp.b #"`",d0
  587.     beq.s    small
  588.  
  589.     cmp.b #"!",d0
  590.     beq.s    small
  591.  
  592.     cmp.b #"1",d0
  593.     beq.s    small
  594.  
  595.     bra.s    normal
  596.     
  597. small:    move.l    #15,scroff
  598.  
  599.  
  600.  
  601.  
  602. normal:
  603.  
  604.     move.l    a0,textptr
  605.  
  606.     sub.l    #32,d0
  607.     mulu    #252,d0
  608.     add.l    #font,d0
  609.     move.l    d0,a1
  610.  
  611.  
  612.     move.l    #screen+offset+down,a0
  613.     move.l    #44,a3
  614.     move.l    #(21*64)+2,a2
  615.     jsr    all_blit
  616.     add.l    #(256*40),a0
  617.     add.l    #84,a1
  618.     jsr    all_blit
  619.     add.l    #(256*40),a0
  620.     add.l    #84,a1
  621.     jsr    all_blit
  622.  
  623. finished:
  624.     rts
  625.     
  626. finished2:
  627.     move.w    #(15*16)+15,scroller
  628.     move.l    #screen+offset+down-44,a0
  629.     move.l    #screen+offset+down-42,a1
  630.     move.l    #(11*64)+44,a2
  631.     move.l    #0,a3
  632.     jsr    all_blit
  633.     add.l    #(256*40),a0
  634.     add.l    #(256*40),a1
  635.     jsr    all_blit
  636.     add.l    #(256*40),a0
  637.     add.l    #(256*40),a1
  638.     jsr    all_blit
  639.     
  640.     rts    
  641.  
  642.     
  643.     Section    copdat,Data_c
  644.  
  645. text:        
  646.     dc.b    "WELCOME TO `I LIKE TRAFFIC LIGHTS`,  THIS SCROLLER MAY PROVE "
  647.     dc.b    "CONFUSING, SO I`LL TRY TO EXPLAIN AS SIMPLY AS POSSIBLE. THERE ARE 2 "
  648.     dc.b    "MONTY PYTHONS MENTIONED IN THIS SCROLLER, LSD`S MONTY PYTHON, AND "
  649.     dc.b    "THE ORIGINAL MONTY PYTHON TEAM.   THIS SONG WAS CONVERTED TO THE AMIGA "
  650.     dc.b    "BY MONTY PYTHON OF LSD. THE SAMPLE ITSELF WAS TAKEN FROM MONTY PYTHONS "
  651.     dc.b    "CONTRACTUAL OBLIGATION LP, AND IS UNDER 330K UNPACKED, WHICH ISN`T BAD "
  652.     dc.b    "FOR OVER 2 AND A HALF MINUTES. THE SAMPLING WAS DONE ON AN "
  653.     dc.b    "ATARI ST USING ST REPLAY 4 AT 15KHZ, THEN REDUCED TO 12KHZ TO "
  654.     dc.b    "SAVE MEMORY, AND FINALY CONVERTED TO THE AMIGA BY LSD`S MONTY PYTHON. "
  655.     dc.b    "DUE TO LACK OF TIME, THIS FONT WAS "
  656.     dc.b    "STOLEN FROM DIGILOGICS SAMPLERIPPER, ORIGIANALLY DESIGNED BY QUINCY. "
  657.     dc.b    "  ALL CODING IS BY SHAGRATT OF LSD.   ORIGINAL CONCEPT BY PARASITE.                "
  658.     dc.b    0
  659.             even
  660.  
  661. textptr:    dc.l    text
  662.  
  663. mt_data:    incbin     "mod.iltl_monty"
  664.  
  665. scroff:        dc.l    31
  666. old_copper:    dc.l    0
  667. graphics:    dc.l    0
  668.  
  669. my_copper:    dc.w    $100,$4200    ; 4 bp - lores
  670.         dc.w    $104,$a        ; bp control reg
  671.         dc.w    $108,0        ; bp modulo - odd
  672.         dc.w    $10a,0        ; bp modulo - even
  673.         dc.w    $180,0        ; colour 0 to black
  674.         dc.w    $102,0
  675.         dc.w    $120,0,$122,0
  676.     
  677.         dc.w    $092,$38    ; bp start horz
  678.         dc.w    $08e,$2c8c    ; bp window start left
  679.         dc.w    $090,$2ce3    ; bp window bot right
  680.         dc.w    $094,$2dd0    ; bp stop horz
  681.         
  682.         dc.w    $0e0        ; bp 1 address hi-byte
  683. bitplane0_hi:    dc.w    0
  684.         dc.w    $e2        ; bp 1 address
  685. bitplane0_lo:    dc.w    0,$e4
  686.  
  687. bitplane1_hi:    dc.w    0
  688.         dc.w    $e6        ; bp 2 address
  689. bitplane1_lo:    dc.w    0,$e8
  690.  
  691. bitplane2_hi:    dc.w    0
  692.         dc.w    $ea        ; bp 3 address
  693. bitplane2_lo:    dc.w    0,$ec
  694.  
  695. bitplane3_hi:    dc.w    0
  696.         dc.w    $ee        ; bp 4 address
  697. bitplane3_lo:    dc.w    0
  698.  
  699.         dc.w    $180,$000
  700.         dc.w    $182,$000
  701.         dc.w    $184,$000
  702.         dc.w    $186,$000
  703.          dc.w    $188,$000
  704.         dc.w    $18a,$000
  705.         dc.w    $18c,$000
  706.         dc.w    $18e,$000
  707.         dc.w    $190,$000
  708.         dc.w    $192,$000
  709.         dc.w    $194,$000
  710.         dc.w    $196,$000
  711.         dc.w    $198,$000
  712.         dc.w    $19a,$000
  713.         dc.w    $19c,$000
  714.         dc.w    $19e,$000
  715.         
  716.         dc.w    $3801,$ff00
  717.         dc.w    $100,$4200
  718.  
  719.         dc.w    $180,$000
  720.         dc.w    $182,$444
  721.         dc.w    $184,$666
  722.         dc.w    $186,$888
  723.          dc.w    $188,$886
  724.         dc.w    $18a,$a68
  725.         dc.w    $18c,$c8a
  726.         dc.w    $18e,$eac
  727.         dc.w    $190,$000
  728.         dc.w    $192,$668
  729.         dc.w    $194,$242
  730.         dc.w    $196,$462
  731.         dc.w    $198,$422
  732.         dc.w    $19a,$644
  733.         dc.w    $19c,$664
  734.         dc.w    $19e,$aaa
  735.         
  736.  
  737.         ; below : $33 is y line $33, 01 is wait
  738.         ; $ff is ignore x pos, $00 ?
  739.         ; $180 is colour register 0 (bg col)
  740.         
  741.         dc.w    $ffe1,$fffe    ; wait for end of ntsc screen
  742.  
  743.         dc.w    $100,$3200    ; 3 bp - lores 
  744.     
  745.         dc.w    $092,$20    ; bp start horz
  746.         dc.w    $08e,$2c78    ; bp window start left
  747.         dc.w    $090,$2cc4    ; bp window bot right
  748.         dc.w    $094,$2de8    ; bp stop horz
  749.         
  750.         dc.w    $102
  751. scroller:    dc.w    0
  752.         dc.w    $182,$08F
  753.         dc.w    $184,$06D
  754.         dc.w    $186,$04C
  755.         dc.w    $188,$03A
  756.         dc.w    $18a,$019
  757.         dc.w    $18c,$008
  758.         dc.w    $18e,$006
  759.  
  760.         dc.w    $1901,$ff00
  761.         dc.w    $10a,-144,$108,-144
  762.  
  763.         dc.w    $182,$06C
  764.         dc.w    $184,$04A
  765.         dc.w    $186,$02A
  766.         dc.w    $188,$018
  767.         dc.w    $18a,$007
  768.         dc.w    $18c,$006
  769.         dc.w    $18e,$004
  770.         dc.w    $180,$00b
  771.  
  772.         dc.w    $1a01,$ff00,$180,$008
  773.         dc.w    $1b01,$ff00,$180,$007
  774.         dc.w    $1c01,$ff00,$180,$006
  775.         dc.w    $1d01,$ff00,$180,$005
  776.         dc.w    $1e01,$ff00,$180,$004
  777.         
  778.  
  779.         dc.w    $2701,$ff00,$100,$0200
  780.  
  781.         dc.w    $3001,$ff00    ; wait for end of pal screen
  782.  
  783.         dc.w    $9c,$8010    ; irq set bits - ?
  784.         dc.w    $ffff,$fffe    ; end of copper list
  785.     
  786. glib:        dc.b    "graphics.library",0
  787.  
  788.     even
  789.     
  790. screen:        incbin "monty.bin"
  791. font:        incbin "metal.bin"
  792.  
  793.     End
  794.